loading.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233
  1. export default function ListLoading() {
  2. return (
  3. <div className="flex min-h-screen flex-col">
  4. {/* Header skeleton */}
  5. <header className="sticky top-0 z-10 border-b border-white/10 bg-background/80 backdrop-blur-sm">
  6. <div className="mx-auto flex max-w-5xl items-center justify-between px-4 py-3">
  7. <div className="h-7 w-40 animate-pulse rounded bg-white/10" />
  8. <div className="h-9 w-9 animate-pulse rounded-lg bg-white/10" />
  9. </div>
  10. </header>
  11. <main className="mx-auto w-full max-w-5xl flex-1 px-4 py-6">
  12. {/* Search bar skeleton */}
  13. <div className="mb-6">
  14. <div className="h-10 animate-pulse rounded-lg bg-white/10" />
  15. </div>
  16. {/* Roll buttons skeleton */}
  17. <div className="mb-8 flex gap-3">
  18. <div className="h-12 flex-1 animate-pulse rounded-lg bg-white/10" />
  19. <div className="h-12 flex-1 animate-pulse rounded-lg bg-white/10" />
  20. </div>
  21. {/* Movie grid skeleton */}
  22. <div className="grid grid-cols-2 gap-4 sm:grid-cols-3 md:grid-cols-4">
  23. {Array.from({ length: 8 }).map((_, i) => (
  24. <div key={i} className="aspect-[2/3] animate-pulse rounded-lg bg-white/10" />
  25. ))}
  26. </div>
  27. </main>
  28. </div>
  29. );
  30. }